package com.ck.ips.service;

import com.ck.common.model.OperationResult;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * @description: apk
 * @author: zhanglei
 * @date: 2019/5/14 13:47
 */
public interface DeviceUpgradeService {

    /**
     * 根据条件获取apk列表
     * @param versionName apk版本名称
     * @param upgradeName apk名称
     * @param pageNum 当前页
     * @param pageSize 每页条数
     * @return apk列表
     */
    OperationResult<Object> getApkList(String versionName, String upgradeName, Integer pageNum, Integer pageSize);

    /**
     * 上传apk
     * @param files 文件
     * @return 解析数据
     */
    OperationResult<Object> uploadApk(MultipartFile files) throws IOException;

    /**
     * 新增apk
     * @param upgradeName 文件名称
     * @param versionCode 版本号
     * @param versionName 版本名称
     * @param packageName 包名
     * @param md5 MD5
     * @param size 大小
     * @param url 下载地址
     * @param active 是否强制升级
     * @param isTiming 是否定时升级
     * @param timingTime 定时升级时间
     * @param description 版本描述
     * @return
     */
    OperationResult<Object> addApk(String upgradeName, Integer versionCode, String versionName, String packageName, String md5, String size, String url, Integer active, Integer isTiming, Long timingTime, String description);

    /**
     * 根据id获取apk详情
     * @param deviceUpgradeId apk的id
     * @return apk详情
     */
    OperationResult<Object> getApkById(Long deviceUpgradeId);

    /**
     * 编辑apk
     * @param deviceUpgradeId apk id
     * @param upgradeName 文件名称
     * @param versionCode 版本号
     * @param versionName 版本名称
     * @param packageName 包名
     * @param md5 MD5
     * @param size 大小
     * @param url 下载地址
     * @param active 是否强制升级
     * @param isTiming 是否定时升级
     * @param timingTime 定时升级时间
     * @param description 版本描述
     * @return
     */
    OperationResult<Object> editApk(Long deviceUpgradeId, String upgradeName, Integer versionCode, String versionName, String packageName, String md5, String size, String url, Integer active, Integer isTiming, Long timingTime, String description);

    /**
     * 删除apk
     * @param deviceUpgradeId apk id
     * @return
     */
    OperationResult<Object> deleteApk(Long deviceUpgradeId);

    /**
     * 手动升级apk
     * @param deviceCodes 终端code字符串
     * @param deviceUpgradeId apkid
     * @return
     */
    OperationResult<Object> upgradeApkToMips(String deviceCodes, Long deviceUpgradeId,String ip);

    /**
     * 查看apk升级详情
     * @param deviceName 终端名称
     * @param deviceSerialNum 终端序列号
     * @param deviceUpgradeId apk id
     * @param pageNum 当前页
     * @param pageSize 每页条数
     * @return
     */
    OperationResult<Object> deviceUpgradeInfo(String deviceName, String deviceSerialNum, Long deviceUpgradeId, Integer pageNum, Integer pageSize);

    /**
     * 查看apk升级数量详情
     * @param deviceUpgradeId apk 的 id
     * @return 数量详情
     */
    OperationResult<Object> getApkUpgradeNumDetail(Long deviceUpgradeId);
}
